function transitionEnd() {
	var e = document.createElement("bootstrap");
	var t = {
		WebkitTransition: "webkitTransitionEnd",
		MozTransition: "transitionend",
		OTransition: "oTransitionEnd otransitionend",
		transition: "transitionend"
	};
	for (var n in t) {
		if (e.style[n] !== undefined) {
			return {
				end: t[n]
			}
		}
	}
	return false
}(function(e) {
	e.fn.smartZoom = function(t) {
		function r(e) {}

		function s(e, t) {
			var r = n.data("smartZoomData");
			if (r.currentWheelDelta * t < 0) r.currentWheelDelta = 0;
			r.currentWheelDelta += t;
			i.zoom(r.mouseWheelDeltaFactor * r.currentWheelDelta, {
				x: e.pageX,
				y: e.pageY
			})
		}

		function o(e) {
			e.preventDefault()
		}

		function u() {
			var e = n.data("smartZoomData");
			if (e.settings.mouseMoveEnabled != true || e.settings.moveCursorEnabled != true) return;
			var t = S();
			var r = t.width / e.originalSize.width;
			if (parseInt(r * 100) > parseInt(e.adjustedPosInfos.scale * 100)) n.css({
				cursor: "move"
			});
			else n.css({
				cursor: "default"
			})
		}

		function a(e) {
			m(e.pageX, e.pageY)
		}

		function f(t) {
			t.preventDefault();
			e(document).on("mousemove.smartZoom", l);
			e(document).bind("mouseup.smartZoom", c);
			var r = n.data("smartZoomData");
			r.moveCurrentPosition = new A(t.pageX, t.pageY);
			r.moveLastPosition = new A(t.pageX, t.pageY)
		}

		function l(e) {
			var t = n.data("smartZoomData");
			if (t.mouseMoveForPan || !t.mouseMoveForPan && t.moveCurrentPosition.x != e.pageX && t.moveCurrentPosition.y != e.pageY) {
				t.mouseMoveForPan = true;
				v(e.pageX, e.pageY, 0, false)
			}
		}

		function c(t) {
			var r = n.data("smartZoomData");
			if (r.mouseMoveForPan) {
				r.mouseMoveForPan = false;
				if (r.moveLastPosition.distance(r.moveCurrentPosition) > 4) {
					var i = r.moveLastPosition.interpolate(r.moveCurrentPosition, -4);
					v(i.x, i.y, 500, true)
				} else {
					v(r.moveLastPosition.x, r.moveLastPosition.y, 0, true)
				}
			} else if (r.settings.zoomOnSimpleClick) {
				m(t.pageX, t.pageY)
			}
			e(document).unbind("mousemove.smartZoom");
			e(document).unbind("mouseup.smartZoom")
		}

		function h(t) {
			t.preventDefault();
			e(document).unbind("touchmove.smartZoom");
			e(document).unbind("touchend.smartZoom");
			e(document).bind("touchmove.smartZoom", p);
			e(document).bind("touchend.smartZoom", d);
			var r = t.originalEvent.touches;
			var i = r[0];
			var s = n.data("smartZoomData");
			s.touch.touchMove = false;
			s.touch.touchPinch = false;
			s.moveCurrentPosition = new A(i.pageX, i.pageY);
			s.moveLastPosition = new A(i.pageX, i.pageY);
			s.touch.lastTouchPositionArr = new Array;
			var o;
			var u = r.length;
			for (var a = 0; a < u; ++a) {
				o = r[a];
				s.touch.lastTouchPositionArr.push(new A(o.pageX, o.pageY))
			}
		}

		function p(e) {
			e.preventDefault();
			var t = n.data("smartZoomData");
			var r = e.originalEvent.touches;
			var s = r.length;
			var o = r[0];
			if (s == 1 && !t.touch.touchPinch && t.settings.touchMoveEnabled == true) {
				if (!t.touch.touchMove) {
					var u = t.touch.lastTouchPositionArr[0];
					if (u.distance(new A(o.pageX, o.pageY)) < 3) {
						return
					} else t.touch.touchMove = true
				}
				v(o.pageX, o.pageY, 0, false)
			} else if (s == 2 && !t.touch.touchMove && t.settings.pinchEnabled == true) {
				t.touch.touchPinch = true;
				var a = r[1];
				var f = t.touch.lastTouchPositionArr[0];
				var l = t.touch.lastTouchPositionArr[1];
				var c = new A(o.pageX, o.pageY);
				var h = new A(a.pageX, a.pageY);
				var p = c.distance(h);
				var d = f.distance(l);
				var m = p - d;
				if (Math.abs(m) < 3) return;
				var g = new A((c.x + h.x) / 2, (c.y + h.y) / 2);
				var y = S();
				var b = t.originalSize;
				var w = y.width / b.width;
				var E = p / d;
				var x = y.width * E / b.width;
				i.zoom(x - w, g, 0);
				t.touch.lastTouchPositionArr[0] = c;
				t.touch.lastTouchPositionArr[1] = h
			}
		}

		function d(t) {
			t.preventDefault();
			var r = t.originalEvent.touches.length;
			if (r == 0) {
				e(document).unbind("touchmove.smartZoom");
				e(document).unbind("touchend.smartZoom")
			}
			var i = n.data("smartZoomData");
			if (i.touch.touchPinch) return;
			if (i.touch.touchMove) {
				if (i.moveLastPosition.distance(i.moveCurrentPosition) > 2) {
					var s = i.moveLastPosition.interpolate(i.moveCurrentPosition, -4);
					v(s.x, s.y, 500, true)
				}
			} else {
				if (i.settings.dblTapEnabled == true && i.touch.lastTouchEndTime != 0 && (new Date).getTime() - i.touch.lastTouchEndTime < 400) {
					var o = i.touch.lastTouchPositionArr[0];
					m(o.x, o.y)
				}
				i.touch.lastTouchEndTime = (new Date).getTime()
			}
		}

		function v(e, t, i, s) {
			g(r.PAN);
			var o = n.data("smartZoomData");
			o.moveLastPosition.x = o.moveCurrentPosition.x;
			o.moveLastPosition.y = o.moveCurrentPosition.y;
			var u = n.offset();
			var a = S();
			var f = u.left + (e - o.moveCurrentPosition.x);
			var l = u.top + (t - o.moveCurrentPosition.y);
			var c = y(f, l, a.width, a.height);
			x(r.PAN, r.START, false);
			E(n, c.x, c.y, a.width, a.height, i, s == true ? function() {
				x(r.PAN, r.END, false)
			} : null);
			o.moveCurrentPosition.x = e;
			o.moveCurrentPosition.y = t
		}

		function m(e, t) {
			var r = n.data("smartZoomData");
			var s = r.originalSize;
			var o = S();
			var u = o.width / s.width;
			var a = r.adjustedPosInfos.scale;
			var f = parseFloat(r.settings.dblClickMaxScale);
			var l;
			if (u.toFixed(2) > f.toFixed(2) || Math.abs(f - u) > Math.abs(u - a)) {
				l = f - u
			} else {
				l = a - u
			}
			i.zoom(l, {
				x: e,
				y: t
			})
		}

		function g(t) {
			var r = n.data("smartZoomData");
			if (r.transitionObject) {
				if (r.transitionObject.cssAnimHandler) n.off(e.support.transition, r.transitionObject.cssAnimTimer);
				var i = r.originalSize;
				var s = S();
				var o = new Object;
				o[r.transitionObject.transition] = "all 0s";
				if (r.transitionObject.css3dSupported) {
					o[r.transitionObject.transform] = "translate3d(" + s.x + "px, " + s.y + "px, 0) scale3d(" + s.width / i.width + "," + s.height / i.height + ", 1)"
				} else {
					o[r.transitionObject.transform] = "translateX(" + s.x + "px) translateY(" + s.y + "px) scale(" + s.width / i.width + "," + s.height / i.height + ")"
				}
				n.css(o)
			} else {
				n.stop()
			}
			u();
			if (t != null) x(t, "", true)
		}

		function y(e, t, r, i) {
			var s = n.data("smartZoomData");
			var o = Math.min(s.adjustedPosInfos.top, t);
			o += Math.max(0, s.adjustedPosInfos.top + s.adjustedPosInfos.height - (o + i));
			var u = Math.min(s.adjustedPosInfos.left, e);
			u += Math.max(0, s.adjustedPosInfos.left + s.adjustedPosInfos.width - (u + r));
			return new A(u.toFixed(2), o.toFixed(2))
		}

		function b(e) {
			n.unbind("load.smartZoom");
			i.init.apply(n, [e.data.arguments])
		}

		function w() {
			var e = n.data("smartZoomData");
			var t = e.containerDiv;
			var r = e.originalSize;
			var i = t.parent().offset();
			var s = C(e.settings.left, i.left, t.parent().width());
			var o = C(e.settings.top, i.top, t.parent().height());
			t.offset({
				left: s,
				top: o
			});
			t.width(N(e.settings.width, t.parent().width(), s - i.left));
			t.height(N(e.settings.height, t.parent().height(), o - i.top));
			var a = L(t);
			var f = Math.min(Math.min(a.width / r.width, a.height / r.height), 1).toFixed(2);
			var l = r.width * f;
			var c = r.height * f;
			e.adjustedPosInfos = {
				left: (a.width - l) / 2 + i.left,
				top: (a.height - c) / 2 + i.top,
				width: l,
				height: c,
				scale: f
			};
			g();
			E(n, e.adjustedPosInfos.left, e.adjustedPosInfos.top, l, c, 0, function() {
				n.css("visibility", "visible")
			});
			u()
		}

		function E(t, r, i, s, o, u, a) {
			var f = n.data("smartZoomData");
			var l = f.containerDiv.offset();
			var c = r - l.left;
			var h = i - l.top;
			if (f.transitionObject != null) {
				var p = f.originalSize;
				var d = new Object;
				d[f.transitionObject.transform + "-origin"] = "0 0";
				d[f.transitionObject.transition] = "all " + u / 1e3 + "s ease-out";
				if (f.transitionObject.css3dSupported) d[f.transitionObject.transform] = "translate3d(" + c + "px, " + h + "px, 0) scale3d(" + s / p.width + "," + o / p.height + ", 1)";
				else d[f.transitionObject.transform] = "translateX(" + c + "px) translateY(" + h + "px) scale(" + s / p.width + "," + o / p.height + ")";
				if (a != null) {
					f.transitionObject.cssAnimHandler = a;
					t.one(e.support.transition.end, f.transitionObject.cssAnimHandler)
				}
				t.css(d)
			} else {
				t.animate({
					"margin-left": c,
					"margin-top": h,
					width: s,
					height: o
				}, {
					duration: u,
					easing: f.settings.easing,
					complete: function() {
						if (a != null) a()
					}
				})
			}
		}

		function S(e) {
			var t = n.data("smartZoomData");
			var r = n.width();
			var i = n.height();
			var s = n.offset();
			var o = parseInt(s.left);
			var u = parseInt(s.top);
			var a = t.containerDiv.offset();
			if (e != true) {
				o = parseInt(o) - a.left;
				u = parseInt(u) - a.top
			}
			if (t.transitionObject != null) {
				var f = n.css(t.transitionObject.transform);
				if (f && f != "" && f.search("matrix") != -1) {
					var l;
					var c;
					if (f.search("matrix3d") != -1) {
						c = f.replace("matrix3d(", "").replace(")", "").split(",");
						l = c[0]
					} else {
						c = f.replace("matrix(", "").replace(")", "").split(",");
						l = c[3];
						o = parseFloat(c[4]);
						u = parseFloat(c[5]);
						if (e) {
							o = parseFloat(o) + a.left;
							u = parseFloat(u) + a.top
						}
					}
					r = l * r;
					i = l * i
				}
			}
			return {
				x: o,
				y: u,
				width: r,
				height: i
			}
		}

		function x(e, t, i) {
			var s = n.data("smartZoomData");
			var o = "";
			if (i == true && s.currentActionType != e) {
				o = s.currentActionType + "_" + r.END;
				s.currentActionType = "";
				s.currentActionStep = ""
			} else {
				if (s.currentActionType != e || s.currentActionStep == r.END) {
					s.currentActionType = e;
					s.currentActionStep = r.START;
					o = s.currentActionType + "_" + s.currentActionStep
				} else if (s.currentActionType == e && t == r.END) {
					s.currentActionStep = r.END;
					o = s.currentActionType + "_" + s.currentActionStep;
					s.currentActionType = "";
					s.currentActionStep = ""
				}
			}
			if (o != "") {
				var u = jQuery.Event(o);
				u.targetRect = S(true);
				u.scale = u.targetRect.width / s.originalSize.width;
				n.trigger(u)
			}
		}

		function T() {
			var t = document.body || document.documentElement;
			var n = t.style;
			var r = ["transition", "WebkitTransition", "MozTransition", "MsTransition", "OTransition"];
			var i = ["transition", "-webkit-transition", "-moz-transition", "-ms-transition", "-o-transition"];
			var s = ["transform", "-webkit-transform", "-moz-transform", "-ms-transform", "-o-transform"];
			var o = r.length;
			var u;
			for (var a = 0; a < o; a++) {
				if (n[r[a]] != null) {
					transformStr = s[a];
					var f = e('<div style="position:absolute;">Translate3d Test</div>');
					e("body").append(f);
					u = new Object;
					u[s[a]] = "translate3d(20px,0,0)";
					f.css(u);
					css3dSupported = f.offset().left - e("body").offset().left == 20;
					f.empty().remove();
					if (css3dSupported) {
						return {
							transition: i[a],
							transform: s[a],
							css3dSupported: css3dSupported
						}
					}
				}
			}
			return null
		}

		function N(e, t, n) {
			if (e.search && e.search("%") != -1) return (t - n) * (parseInt(e) / 100);
			else return parseInt(e)
		}

		function C(e, t, n) {
			if (e.search && e.search("%") != -1) return t + n * (parseInt(e) / 100);
			else return t + parseInt(e)
		}

		function k() {
			w()
		}

		function L(e) {
			var t = e.offset();
			if (!t) return null;
			var n = t.left;
			var r = t.top;
			return {
				x: n,
				y: r,
				width: e.outerWidth(),
				height: e.outerHeight()
			}
		}

		function A(e, t) {
			this.x = e;
			this.y = t;
			this.toString = function() {
				return "(x=" + this.x + ", y=" + this.y + ")"
			};
			this.interpolate = function(e, t) {
				var n = t * this.x + (1 - t) * e.x;
				var r = t * this.y + (1 - t) * e.y;
				return new A(n, r)
			};
			this.distance = function(e) {
				return Math.sqrt(Math.pow(e.y - this.y, 2) + Math.pow(e.x - this.x, 2))
			}
		}
		var n = this;
		r.ZOOM = "SmartZoom_ZOOM";
		r.PAN = "SmartZoom_PAN";
		r.START = "START";
		r.END = "END";
		r.DESTROYED = "SmartZoom_DESTROYED";
		var i = {
			init: function(t) {
				if (n.data("smartZoomData")) return;
				settings = e.extend({
					top: "0",
					left: "0",
					width: "100%",
					height: "100%",
					easing: "smartZoomEasing",
					initCallback: null,
					maxScale: 3,
					dblClickMaxScale: 1.8,
					mouseEnabled: true,
					scrollEnabled: true,
					dblClickEnabled: true,
					mouseMoveEnabled: true,
					moveCursorEnabled: true,
					adjustOnResize: true,
					touchEnabled: true,
					dblTapEnabled: true,
					zoomOnSimpleClick: false,
					pinchEnabled: true,
					touchMoveEnabled: true,
					containerBackground: "#FFFFFF",
					containerClass: ""
				}, t);
				var r = n.attr("style");
				var i = "smartZoomContainer" + (new Date).getTime();
				var u = e('<div id="' + i + '" class="' + settings.containerClass + '"></div>');
				n.before(u);
				n.remove();
				u = e("#" + i);
				u.css({
					overflow: "hidden"
				});
				if (settings.containerClass == "") u.css({
					"background-color": settings.containerBackground
				});
				u.append(n);
				var l = new Object;
				l.lastTouchEndTime = 0;
				l.lastTouchPositionArr = null;
				l.touchMove = false;
				l.touchPinch = false;
				n.data("smartZoomData", {
					settings: settings,
					containerDiv: u,
					originalSize: {
						width: n.width(),
						height: n.height()
					},
					originalPosition: n.offset(),
					transitionObject: T(),
					touch: l,
					mouseWheelDeltaFactor: .15,
					currentWheelDelta: 0,
					adjustedPosInfos: null,
					moveCurrentPosition: null,
					moveLastPosition: null,
					mouseMoveForPan: false,
					currentActionType: "",
					initialStyles: r,
					currentActionStep: ""
				});
				w();
				if (settings.touchEnabled == true) n.bind("touchstart.smartZoom", h);
				if (settings.mouseEnabled == true) {
					if (settings.mouseMoveEnabled == true) n.bind("mousedown.smartZoom", f);
					if (settings.scrollEnabled == true) {
						u.bind("mousewheel.smartZoom", s);
						u.bind("mousewheel.smartZoom DOMMouseScroll.smartZoom", o)
					}
					if (settings.dblClickEnabled == true && settings.zoomOnSimpleClick == false) u.bind("dblclick.smartZoom", a)
				}
				document.ondragstart = function() {
					return false
				};
				if (settings.adjustOnResize == true) e(window).bind("resize.smartZoom", k);
				if (settings.initCallback != null) settings.initCallback.apply(this, n)
			},
			zoom: function(e, t, i) {
				var s = n.data("smartZoomData");
				var o;
				var a;
				if (!t) {
					var f = L(s.containerDiv);
					o = f.x + f.width / 2;
					a = f.y + f.height / 2
				} else {
					o = t.x;
					a = t.y
				}
				g(r.ZOOM);
				var l = S(true);
				var c = s.originalSize;
				var h = l.width / c.width + e;
				h = Math.max(s.adjustedPosInfos.scale, h);
				h = Math.min(s.settings.maxScale, h);
				var p = c.width * h;
				var d = c.height * h;
				var v = o - l.x;
				var m = a - l.y;
				var b = p / l.width;
				var w = l.x - (v * b - v);
				var T = l.y - (m * b - m);
				var N = y(w, T, p, d);
				if (i == null) i = 700;
				x(r.ZOOM, r.START, false);
				E(n, N.x, N.y, p, d, i, function() {
					s.currentWheelDelta = 0;
					u();
					x(r.ZOOM, r.END, false)
				})
			},
			pan: function(e, t, i) {
				if (e == null || t == null) return;
				if (i == null) i = 700;
				var s = n.offset();
				var o = S();
				var u = y(s.left + e, s.top + t, o.width, o.height);
				if (u.x != s.left || u.y != s.top) {
					g(r.PAN);
					x(r.PAN, r.START, false);
					E(n, u.x, u.y, o.width, o.height, i, function() {
						x(r.PAN, r.END, false)
					})
				}
			},
			destroy: function() {
				var t = n.data("smartZoomData");
				if (!t) return;
				g();
				var i = t.containerDiv;
				n.unbind("mousedown.smartZoom");
				n.bind("touchstart.smartZoom");
				i.unbind("mousewheel.smartZoom");
				i.unbind("dblclick.smartZoom");
				i.unbind("mousewheel.smartZoom DOMMouseScroll.smartZoom");
				e(window).unbind("resize.smartZoom");
				e(document).unbind("mousemove.smartZoom");
				e(document).unbind("mouseup.smartZoom");
				e(document).unbind("touchmove.smartZoom");
				e(document).unbind("touchend.smartZoom");
				n.css({
					cursor: "default"
				});
				i.before(n);
				E(n, t.originalPosition.left, t.originalPosition.top, t.originalSize.width, t.originalSize.height, 5);
				n.removeData("smartZoomData");
				i.remove();
				n.attr("style", t.initialStyles);
				n.trigger(r.DESTROYED)
			},
			isPluginActive: function() {
				return n.data("smartZoomData") != undefined
			}
		};
		if (i[t]) {
			return i[t].apply(this, Array.prototype.slice.call(arguments, 1))
		} else if (typeof t === "object" || !t) {
			if (n[0].tagName.toLowerCase() == "img" && !n[0].complete) {
				n.bind("load.smartZoom", {
					arguments: arguments[0]
				}, b)
			} else {
				i.init.apply(n, [arguments[0]])
			}
		} else {
			e.error("Method " + t + " does not exist on e-smartzoom jquery plugin")
		}
	}
})(jQuery);
(function(e) {
	e.extend(e.easing, {
		smartZoomEasing: function(t, n, r, i, s) {
			return e.easing["smartZoomOutQuad"](t, n, r, i, s)
		},
		smartZoomOutQuad: function(e, t, n, r, i) {
			return -r * (t /= i) * (t - 2) + n
		}
	})
})(jQuery);
(function(e) {
	function t(t) {
		var n = t || window.event,
			r = [].slice.call(arguments, 1),
			i = 0,
			s = true,
			o = 0,
			u = 0;
		t = e.event.fix(n);
		t.type = "mousewheel";
		if (n.wheelDelta) {
			i = n.wheelDelta / 120
		}
		if (n.detail) {
			i = -n.detail / 3
		}
		u = i;
		if (n.axis !== undefined && n.axis === n.HORIZONTAL_AXIS) {
			u = 0;
			o = -1 * i
		}
		if (n.wheelDeltaY !== undefined) {
			u = n.wheelDeltaY / 120
		}
		if (n.wheelDeltaX !== undefined) {
			o = -1 * n.wheelDeltaX / 120
		}
		r.unshift(t, i, o, u);
		return (e.event.dispatch || e.event.handle).apply(this, r)
	}
	var n = ["DOMMouseScroll", "mousewheel"];
	if (e.event.fixHooks) {
		for (var r = n.length; r;) {
			e.event.fixHooks[n[--r]] = e.event.mouseHooks
		}
	}
	e.event.special.mousewheel = {
		setup: function() {
			if (this.addEventListener) {
				for (var e = n.length; e;) {
					this.addEventListener(n[--e], t, false)
				}
			} else {
				this.onmousewheel = t
			}
		},
		teardown: function() {
			if (this.removeEventListener) {
				for (var e = n.length; e;) {
					this.removeEventListener(n[--e], t, false)
				}
			} else {
				this.onmousewheel = null
			}
		}
	};
	e.fn.extend({
		mousewheel: function(e) {
			return e ? this.bind("mousewheel", e) : this.trigger("mousewheel")
		},
		unmousewheel: function(e) {
			return this.unbind("mousewheel", e)
		}
	})
})(jQuery);
$.fn.emulateTransitionEnd = function(e) {
	var t = false,
		n = this;
	$(this).one($.support.transition.end, function() {
		t = true
	});
	var r = function() {
		if (!t) $(n).trigger($.support.transition.end)
	};
	setTimeout(r, e);
	return this
};
$(function() {
	$.support.transition = transitionEnd()
})